#ifndef NANE_INPUTACTION_H
#   define  NANE_INPUTACTION_H

#   include "nane/InputSystem/InputBindingImpl_.h"

#   include <string>

namespace nane 
{
    class InputAction
    {
    public:
        InputAction();
        ~InputAction();

        void AddInputBinding( const InputBinding& _inputBinding, uint32 _modifiersCount, const InputBindingModifier* _modifiers );
        void RemoveInputBinding( const InputBinding& _inputBinding );
        void PreUpdate();
        void Update( EInputDevice _inputDevice, InputEvent* _event );
        void PostUpdate();
        float GetValueLast();
        float GetValueAverage();
        bool IsPressed();
        uint32 WasPressed();
        bool IsReleased();
        uint32 WasReleased();
        
    private:
        std::vector<InputBindingImpl> m_bindings;
        float m_valueLast;
        float m_valueAverage;
        bool m_isPressed;
        uint32 m_wasPressed;
        bool m_isReleased;
        uint32 m_wasReleased;
    };
}   // namespace nane

#endif	// NANE_INPUTACTION_H
